home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / comm / irc / Unreal32B12.lha / Unreal / makeconf < prev    next >
Text File  |  2002-08-25  |  13KB  |  611 lines

  1. #!/bin/sh
  2. # $Id: makeconf,v 1.1.1.1.4.23 2002/08/25 12:07:34 stskeeps Exp $
  3. # Defaults
  4. #
  5. TIME=`date +"%H:%M:%S %Z"`
  6. DATE=`date +"%a, %b %e %Y"`
  7. IRCDCONF="unrealircd.conf"
  8. SERVNAME="Server.IRC.net"
  9. COMMENT="IRC server!"
  10. ADMIN="Admin-name"
  11. ADMNICK="Admin"
  12. ADMADDR="admin@no.where.com"
  13. OPERNAME="admin"
  14. OPERADDR="*@*"
  15. OPERPASS="password"
  16. NUMERIC=""
  17. PORT="6667"
  18. OPRT="default"
  19. LINKPASS="linkpass"
  20. VIRTUAL="1.2.3.4"
  21. ENCRYPT="Yes"
  22. FLAGS="OAZHWe"
  23. RESTARTPASS="restartpass"
  24. DIEPASS="diepass"
  25. SERVICES="Services.IRC-Net.Org"
  26.  
  27. # these are so I can use stuff like $1 without it replacing it...like by
  28. # using $dlrsgn$uno for $1
  29. dlrsgn="$"
  30. uno="1"
  31. dos="2"
  32.  
  33. # remove the temp file if it exists
  34. rm -f mkconf.tmp
  35.  
  36. # make a quick script for replacing one line with another
  37.  
  38. cat > repl_str << __EOF__
  39. sed -e "s@^$dlrsgn$uno\(.*\)@$dlrsgn$dos" $IRCDCONF > mkconf.tmp
  40. cp mkconf.tmp $IRCDCONF
  41. rm mkconf.tmp
  42. __EOF__
  43.  
  44. # mark repl_str as an executable
  45. chmod +x repl_str
  46. rm -f repl_str
  47. # Checking out how to specify not to make a new line with the current OS
  48. c=''
  49. n=''
  50. 2>/dev/null
  51. if [ "`eval echo -n 'a'`" = "-n a" ]; then
  52.     c='\c'
  53. else
  54.     n='-n'
  55. fi
  56.  
  57. # we use a modified mkpasswd credit to Nelson Minar (minar@reed.edu)
  58. # for creating the original mkpasswd
  59. if test "x$CRYPT_OPER_PASSWORD" != "x" -o "x$CRYPT_LINK_PASSWORD" != "x" -o "x$CRYPT_XLINE_PASSWORD" != "x" ; then
  60.         cat > crypter.tmp.c << __EOF__
  61.             #include <stdlib.h>
  62.             #include <stdio.h>
  63.             int main(int argc, char *argv[])
  64.             {
  65.                 static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./";
  66.                 char salt[3];
  67.                 char *plaintext;
  68.                 srandom(time(0));
  69.                 salt[0] = saltChars[random() % 64];
  70.                 salt[1] = saltChars[random() % 64];
  71.                 salt[2] = 0;
  72.                 plaintext = argv[1];
  73.                 printf("%s", crypt(plaintext, salt));
  74.             }
  75. __EOF__
  76.         cc crypter.tmp.c -o crypter.tmp -lcrypt
  77.         rm crypter.tmp.c        
  78. fi
  79.  
  80. CONF=$IRCDCONF
  81.  
  82. if [ -r "$CONF" ]; then
  83.     echo "$IRCDCONF found"
  84.     echo " "
  85.     echo "   I don't suggest running this with the conf file already"
  86.     echo "existing, since you will lose all the data in your conf file."
  87.     echo "This script is just for creating one. If you want to recreate"
  88.     echo "a conf file, type 'recreate'."
  89.     echo $n " [exit] -> $c"
  90.     read cc
  91.  
  92.     if [ "$cc" != "recreate" ]; then
  93.         echo " "
  94.         echo "   OK, do you want to edit $IRCDCONF using an editor?"
  95.         echo "If so, specify the editor you want to use. Otherwise,"
  96.         echo "type 'exit'."
  97.         EDITFND="not found"
  98.  
  99.                 if [ -r /usr/bin/pico ]; then
  100.                         EDITFND="pico"
  101.                 fi
  102.  
  103.                 if [ -r /usr/bin/joe ]; then
  104.                         EDITFND="joe"
  105.                 fi
  106.  
  107.         if [ -r /usr/bin/vi ]; then
  108.             EDITFND="vi"
  109.         fi
  110.  
  111.         if [ -r /usr/bin/vim ]; then
  112.             EDITFND="vim"
  113.         fi
  114.  
  115.         while [ "c" = "c" ]; do
  116.             echo $n " [$EDITFND] -> $c"
  117.             read EDITOR
  118.  
  119.             if [ -z "$EDITOR" ]; then
  120.                 EDITOR="$EDITFND"
  121.             fi
  122.  
  123.             if [ "$EDITOR" = "exit" ]; then
  124.                 echo "Have a nice day."
  125.                 exit 1
  126.             fi
  127.  
  128.             if [ -f $EDITOR ]; then
  129.                 $EDITOR $CONF
  130.                 exit 1
  131.             fi
  132.  
  133.             if [ -f /usr/bin/$EDITOR ]; then
  134.                 /usr/bin/$EDITOR $CONF
  135.                 exit 1
  136.             fi
  137.  
  138.             echo "   Editor not found. Specify a valid editor or"
  139.             echo "type 'exit' to quit this script."
  140.         done
  141.  
  142.     fi
  143.  
  144.     mv $CONF "$CONF.saved"
  145.     rm $CONF
  146.     echo "$IRCDCONF has been renamed to ircd.conf.saved"
  147. else
  148.     echo "$IRCDCONF is not found. (good)"
  149. fi
  150.  
  151. clear
  152. echo "|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|"
  153. echo "| Welcome to the $IRCDCONF generator. |"
  154. echo "|=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=|"
  155. echo " "
  156. echo "What will your server name be? (ie: $SERVNAME)"
  157. echo $n " [$SERVNAME] -> $c"
  158. read cc
  159. if [ ! -z "$cc" ]; then
  160.     SERVNAME="$cc"
  161. fi
  162.  
  163. echo " "
  164. echo "What is your IRC server's IP? (ie: $VIRTUAL)"
  165. echo "Use * to bind to all interfaces"
  166. echo $n " [$VIRTUAL] -> $c"
  167. read cc
  168. if [ ! -z "$cc" ]; then
  169.         VIRTUAL="$cc"
  170. fi
  171.  
  172. echo " "
  173. echo "Server comment? (ie: Main Hub Server)"
  174. echo $n " [$COMMENT] -> $c"
  175. read cc
  176. if [ ! -z "$cc" ]; then
  177.     COMMENT="$cc"
  178. fi
  179.  
  180. echo " "
  181. echo "Main port? (ie: 6667)"
  182. echo $n " [$PORT] -> $c"
  183. read cc
  184. if [ ! -z "$cc" ]; then
  185.     PORT="$cc"
  186. fi
  187.  
  188. echo " "
  189. echo "What server numeric does the server have (range = 1..256)"
  190. echo "Must NOT be the same as other servers you link with"
  191. echo $n " [] -> $c"
  192. read cc
  193. if [ ! -z "$cc" ]; then
  194.     NUMERIC="$cc"
  195. fi
  196.  
  197. echo " "
  198. echo "What is your real name? (ie: John Doe)"
  199. echo $n " [$ADMIN] -> $c"
  200. read cc
  201. if [ ! -z "$cc" ]; then
  202.     ADMIN="$cc"
  203. fi
  204.  
  205. echo " "
  206. echo "What is your IRC nickname? (ie: JD)"
  207. echo $n " [$ADMNICK] -> $c"
  208. read cc
  209. if [ ! -z "$cc" ]; then
  210.     ADMNICK="$cc"
  211. fi
  212.  
  213. echo " "
  214. echo "What is your e-mail address? (ie: john@doe.com)"
  215. echo $n " [$ADMADDR] -> $c"
  216. read cc
  217. if [ ! -z "$cc" ]; then
  218.     ADMADDR="$cc"
  219. fi
  220.  
  221. echo " "
  222. OPERNAME="$ADMNICK"
  223. echo "What will your opername be for your O:line? (ie: johndoe)"
  224. echo $n " [$OPERNAME] -> $c"
  225. read cc
  226. if [ ! -z "$cc" ]; then
  227.     OPERNAME="$cc"
  228. fi
  229.  
  230. echo " "
  231. echo "What oper flags do you want to have? (ie: OAWZ)"
  232. echo "Some flags to choose from:"
  233. echo "  o = local oper"
  234. echo "  O = global oper"
  235. echo "  N = network administrator"
  236. echo "  A = server administrator"
  237. echo "  C = co administrator"
  238. echo "  read unrealircd.doc for more info about O:line flags)"
  239. echo $n " [$FLAGS] -> $c"
  240. read cc
  241. if [ ! -z "$cc" ]; then
  242.     FLAGS="$cc"
  243. fi
  244. #Don't ask if they use encrypted oper passes, we can tell if they do
  245.  
  246. echo " "
  247. echo "What will your /oper password be? (ie: snoopy67)"
  248. echo $n " [$OPERPASS] -> $c"
  249. read cc
  250. if [ ! -z "$cc" ]; then
  251.         OPERPASS="$cc"
  252. fi
  253.  
  254. if [ "$CRYPT_OPER_PASSWORD" != "" ]; then
  255.     OPERPASS=`./crypter.tmp $OPERPASS`
  256. fi
  257.  
  258. echo " "
  259. echo "What is your user@host mask on IRC? (ie: *@*.toronto.globalserve.net)"
  260. echo $n " [$OPERADDR] -> $c"
  261. read cc
  262. if [ ! -z "$cc" ]; then
  263.     OPERADDR="$cc"
  264. fi
  265.  
  266. echo " "
  267. echo "What do you want your die password to be?"
  268. echo $n " [$DIEPASS] -> $c"
  269. read cc
  270. if [ ! -z "$cc" ]; then
  271.         DIEPASS="$cc"
  272. fi
  273.  
  274. if [ "$CRYPT_XLINE_PASSWORD" != "" ]; then
  275.     DIEPASS=`./crypter.tmp $cc`
  276. fi
  277.  
  278. echo " "
  279. echo "What do you want your restart password to be?"
  280. echo $n " [$RESTARTPASS] -> $c"
  281. read cc
  282. if [ ! -z "$cc" ]; then
  283.             RESTARTPASS="$cc"
  284. fi
  285. if [ "$CRYPT_XLINE_PASSWORD" != "" ]; then
  286.     RESTARTPASS=`./crypter.tmp $cc`
  287. fi
  288. echo " "
  289. echo "If your running services, or linking to a network that has"
  290. echo "services, please state the services servername."
  291. echo "If you are running a non-services network, just type 'next'"
  292. echo $n " [$SERVICES] -> $c"
  293. read cc
  294.  
  295. #if [ ! -z "$cc" ]; then
  296. #        SERVICES="$cc"
  297. #fi
  298.  
  299. if [ "$cc" = "next" ]; then
  300.         SERVICES="No.Services.Selected"
  301. elif [ ! -z "$cc" ]; then
  302.         SERVICES="$cc"
  303. fi
  304.  
  305. cat > $CONF << __EOF__
  306. /*
  307.  *
  308.  * Filename:  $IRCDCONF
  309.  * Created:  $DATE - $TIME
  310.  *
  311.  */
  312.  
  313. /* Server Info */
  314. me {
  315.     name $SERVNAME;
  316.     info "$COMMENT";
  317. __EOF__
  318. if [ $NUMERIC != "" ]; then
  319.     echo "    numeric $NUMERIC;" >> $CONF
  320. fi
  321. cat >> $CONF << __EOF__
  322. };
  323.  
  324. /* Admin Info */
  325. admin {
  326.     "$ADMIN";
  327.     "$ADMNICK";
  328.     "$ADMADDR";
  329. };
  330.  
  331. /* Classes */
  332. class clients {
  333.     pingfreq 90;
  334.     maxclients 245;
  335.     sendq 100000;
  336. };
  337.  
  338. class servers {
  339.     pingfreq 300;
  340.     connfreq 600;
  341.     maxclients 5;
  342.     sendq 1000000;
  343. };
  344.  
  345. /* Allow info */
  346. allow {
  347.     ip "*@*";
  348.     hostname "*@*";
  349.     class clients;
  350. };
  351.  
  352. /* Die/Restart Password */
  353. drpass {
  354.     die "$DIEPASS";
  355.     restart "$RESTARTPASS";
  356. };
  357.  
  358. oper $OPERNAME {
  359.     from {
  360.         userhost $OPERADDR;
  361.     };
  362.     password "$OPERPASS";
  363.     flags $FLAGS;
  364.     class clients;
  365. };
  366.  
  367. __EOF__
  368.  
  369. echo "/* Links */" >> $CONF
  370. echo " "
  371. echo "   Would you like to configure any servers for linking?"
  372. echo "Type the servername, or type 'done' when finished."
  373. echo $n " [done] -> $c"
  374. read cc
  375.  
  376. if [ -z "$cc" ]; then
  377.     cc="done"
  378. fi
  379.  
  380. while [ "$cc" != "done" ]; do
  381.     THESERV="$cc"
  382.  
  383.     SHOST="none"
  384.     while [ "$SHOST" = "none" ]; do
  385.         echo " "
  386.         echo "Hostname or ip for the other server? Must be specified."
  387.         echo $n " [] -> $c"
  388.         read SHOST
  389.     done    
  390.  
  391.     echo " "
  392.     echo "Password to send to the other server?"
  393.     echo $n " [$LINKPASS] -> $c"
  394.     read CLP
  395.     if [ -z "$CLP" ]; then
  396.             CLP="$LINKPASS"
  397.     fi
  398.     if [ "$CRYPT_LINK_PASSWORD" != "" ]; then
  399.         CLP=`./crypter.tmp $cc`
  400.     fi
  401.  
  402.     echo " "
  403.     AUTOPORT=""
  404.     AUTOCONN="bad"
  405.     while [ "$AUTOCONN" = "bad" ]; do
  406.         echo " "
  407.         echo "Should we autconnect to this server?"
  408.         echo $n " [Yes] -> $c"
  409.         read cc
  410.         if [ -z "$cc" ]; then
  411.             cc="Yes"
  412.         fi
  413.         case "$cc" in
  414.             [Yy]*)
  415.                 AUTOCONN="yes"
  416.                 echo "What port should we autoconnect to?"
  417.                 echo $n " [$PORT] -> $c"
  418.                 read AUTOPORT
  419.                 if [ -z "$AUTOPORT" ]; then
  420.                     AUTOPORT="$PORT"
  421.                 fi
  422.                 ;;
  423.             [Nn]*)
  424.                 AUTOCONN="no"
  425.                 ;;
  426.             *)
  427.                 echo "Please specify yes or no."
  428.                 AUTOCONN="bad"
  429.                 ;;
  430.         esac
  431.     done
  432.  
  433.     echo " "
  434.     HUB="bad"
  435.     while [ "$HUB" = "bad" ]; do
  436.         echo " "
  437.         echo "Will this server be a hub?"
  438.         echo $n " [Yes] -> $c"
  439.         read cc
  440.         if [ -z "$cc" ]; then
  441.             cc="Yes"
  442.         fi
  443.         case "$cc" in
  444.             [Yy]*)
  445.                 HUB="Yes"
  446.                 ;;
  447.             [Nn]*)
  448.                 HUB="no"
  449.                 ;;
  450.             *)
  451.                 echo "Please specify yes or no."
  452.                 HUB="bad"
  453.                 ;;
  454.         esac
  455.     done
  456.  
  457.     echo "link $THESERV {" >> $CONF
  458.     USER=`echo $SHOST |sed -e 's/\(.*\)@.*/\1/'`
  459.     HOST=`echo $SHOST |sed -e 's/.*@\(.*\)/\1/'`
  460.     if [ "$USER" = "$SHOST" ]; then
  461.         echo "    username *;" >> $CONF
  462.         echo "    hostname $SHOST;" >> $CONF
  463.     else
  464.         echo "    username $USER;" >> $CONF
  465.         echo "    hostname $HOST;" >> $CONF
  466.     fi
  467.         
  468.     echo "    bind-ip *;" >> $CONF
  469.     if [ "$AUTOPORT" != "" ]; then
  470.         echo "    port $AUTOPORT;" >> $CONF
  471.     else
  472.         echo "    port $PORT;" >> $CONF
  473.     fi
  474.     echo "    password-connect \"$CLP\";" >> $CONF
  475.     echo "    password-receive \"$CLP\";" >> $CONF
  476.     echo "    class servers;" >> $CONF
  477.     if [ "$HUB" = "Yes" ]; then
  478.         echo "    hub *;" >> $CONF
  479.     else
  480.         echo "    leaf *;" >> $CONF
  481.     fi
  482.     if [ "$AUTOCONN" != "no" ]; then
  483.         echo "    options {" >> $CONF
  484.         echo "        autoconnect;" >> $CONF
  485.         echo "    };" >> $CONF
  486.     fi
  487.     echo "};" >> $CONF
  488.     echo " " >> $CONF
  489.     echo " "
  490.     echo "Type the servername, or type 'done' when finished."
  491.     echo $n " [done] -> $c"
  492.     read cc
  493.     if [ -z "$cc" ]; then
  494.         cc="done"
  495.     fi
  496. done
  497.  
  498. cat >> $CONF << __EOF__
  499. /* Ulines */
  500. ulines {
  501.     $SERVICES;
  502. };
  503.  
  504. /* Banned nick names */
  505. ban nick { mask "*C*h*a*n*S*e*r*v*"; reason "Reserved for services"; };
  506. ban nick { mask "*N*i*c*k*S*e*r*v*"; reason "Reserved for services"; };
  507. ban nick { mask "*M*e*m*o*S*e*r*v*"; reason "Reserved for services"; };
  508. ban nick { mask "*H*e*l*p*S*e*r*v*"; reason "Reserved for services"; };
  509. ban nick { mask "*O*p*e*r*S*e*r*v*"; reason "Reserved for services"; };
  510. ban nick { mask "*I*n*f*o*S*e*r*v*"; reason "Reserved for services"; };
  511. ban nick { mask "*Admin*"; reason "Reserved for Administrator"; };
  512. ban nick { mask "*IRC*op*"; reason "Reserved for ircops"; };
  513. ban nick { mask "*Oper*"; reason "Reserved for ircops"; };
  514. ban nick { mask "Status"; reason "Bug in mIRC"; };
  515.  
  516. /*
  517.  * Include files
  518.  */
  519. include "badwords.channel.conf";
  520. include "badwords.message.conf";
  521. include "help.conf";
  522. /*
  523.  * Some modules;
  524. */
  525. loadmodule "src/modules/commands.so";
  526. loadmodule "src/modules/scan.so";
  527. loadmodule "src/modules/scan_socks.so";
  528. loadmodule "src/modules/scan_http.so";
  529. /* Ports */
  530. listen $VIRTUAL:$PORT;
  531. __EOF__
  532.  
  533. cc="blank"
  534. echo " "
  535. echo " "
  536. echo "   Would you like any extra ports, other than 6667? Enter them here."
  537. echo "Type 'done' when you are finished. Type 'default' to use 6665-6669/7000."
  538. while [ "$cc" != "done" ]; do
  539.     echo $n " [$OPRT] -> $c"
  540.     read cc
  541.     if [ -z "$cc" ]; then
  542.         cc="$OPRT"
  543.     fi
  544.     if [ "$cc" = "default" ]; then
  545.         echo "listen $VIRTUAL:6660;" >> $CONF
  546.         echo "listen $VIRTUAL:6661;" >> $CONF
  547.         echo "listen $VIRTUAL:6662;" >> $CONF
  548.         echo "listen $VIRTUAL:6663;" >> $CONF
  549.         echo "listen $VIRTUAL:6664;" >> $CONF
  550.                 echo "listen $VIRTUAL:6665;" >> $CONF
  551.                 echo "listen $VIRTUAL:6666;" >> $CONF
  552.                 echo "listen $VIRTUAL:6668;" >> $CONF
  553.                 echo "listen $VIRTUAL:6669;" >> $CONF
  554.                 echo "listen $VIRTUAL:7000;" >> $CONF
  555.         cc="done"
  556.     fi
  557.     if [ "$cc" != "done" ]; then
  558.         if [ $cc = "$PORT" ]; then
  559.             echo "  No, $PORT is already in use"
  560.             echo "please use a port other than $PORT."
  561.         else
  562.             echo "listen $VIRTUAL:$cc;" >> $CONF
  563.         fi
  564.     fi
  565.     case "$OPRT" in
  566.         6660) OPRT="done"
  567.             ;;
  568.         6661) OPRT="6660"
  569.             ;;
  570.         6662) OPRT="6661"
  571.             ;;
  572.         6663) OPRT="6662"
  573.             ;;
  574.         6664) OPRT="6663"
  575.             ;;
  576.         6665) OPRT="6664"
  577.             ;;
  578.         6666) OPRT="6665"
  579.             ;;
  580.         6669) OPRT="6666"
  581.             ;;
  582.         6668) OPRT="6669"
  583.             ;;
  584.         6667) OPRT="6668"
  585.             ;;
  586.         *) OPRT="done"
  587.             ;;
  588.     esac
  589. done
  590.  
  591. # Make it so ONLY the one who created the conf can read or write.
  592. chmod 700 $IRCDCONF
  593.  
  594. cat << __EOF__
  595.  
  596.  
  597.     OK, $IRCDCONF has been generated according to what you specified.
  598. Make sure you double check for errors in $IRCDCONF. We recommend that
  599. you take a look at your $IRCDCONF right now. Thanks for using UnrealIRCd
  600.  
  601. __EOF__
  602.         rm -f crypter.tmp
  603.         echo "Have a nice day."
  604.         echo "[Press enter to continue]"
  605.         read cc
  606.         more .CONFIG.RANT
  607.         echo "[Press enter when you have read all of this]"
  608.         read cc
  609.         echo ""
  610.         exit 1
  611.